<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<title>HLint Report</title>
<script type='text/javascript'>

/* == Algorithm for show/unshow ==
   Each hint/file is given a number, hint# or file#
   When we say showOnly with a class name we add the rules to
   the css #content div {display:none}, #content div.className {display:block}
   When going back to showAll we remove these results
*/

// CSS MANIPULATION //

function deleteRules(n)
{
    var css = document.styleSheets[0];
    for (var i = 0; i < n; i++)
        css.deleteRule(css.cssRules.length-1);
}

function insertRule(s)
{
    var css = document.styleSheets[0];
    css.insertRule(s, css.cssRules.length);
}

// SHOW/HIDE LOGIC //

/**
 * @param {bool} [initialise=false] - Used to signal we are loading the page, so
 the current location doesn't match our presumed state.
 */
function show(id, initialise=false)
{
    var last;
    if (initialise)
    {
        last = "";
    }
    else
    {
        last = document.location.hash.slice(1);
    }

    if (id === last) return;
    if (id.length === 0)
    {
        deleteRules(3);
        insertRule(".all {font-weight: bold;}");
    }
    else
    {
        if (last.length === 0)
        {
            deleteRules(1);
            insertRule("#content div {display:none;}");
        }
        else
        {
            deleteRules(2);
        }
        insertRule("#content div." + id + " {display:block;}");
        insertRule("#" + id + "{font-weight:bold;}");
    }

    if (window.history)
        history.replaceState("", document.title, window.location.pathname + window.location.search + (id === "" ? "" : "#" + id));
    else
        document.location.hash = '#'.concat(id);
}

</script>
<style type="text/css">
/* These rules are manipulated by the script.
   The commented form is how it looks with an id selected */

.all {font-weight: bold;}      /* #content div {display:none;} */
                               /* #content div.id {display:block;} */
                               /* #id {font-weight: bold;} */

</style>
<style type="text/css">
/* See http://www.webreference.com/programming/css_frames/ */
body {
    margin:0;
    border:0;
    padding:0;
    height:100%;
    max-height:100%;
    font-family: sans-serif;
    font-size:76%;
    overflow: hidden;
}

#leftbar {
    position:absolute;
    top:0px;
    left:0px;
    width: 215px;
    bottom: 0px;
    overflow:auto;
    background:rgb(202,223,255);
    margin: 10px;
    padding-top: 0;
    padding-left: 7px;
    padding-right: 7px;
    border-radius: 5px;

    display:none; /* Override if script present */
}

#content {
    position:absolute;
    top:0;
    bottom:0;
    right:0;
    overflow:auto;
    padding-bottom: 15px;
    padding-right: 7px;

    left:10px; /* Override if script present */
}

#leftbar ul {margin-top: 0px; padding-left: 15px;}
#leftbar p {margin-bottom: 0px;}
.note {color: gray; font-size: smaller;}

pre {
    font-family: "lucida console", monospace;
    padding-left: 15px;
    margin: 2px;
}

#content div {
    margin-bottom: 10px;
    margin-right: 10px;
    padding-top: 4px;
    border-top: 1px solid #ccc;
}

.script #content {left:250px;}
.script #leftbar {display: block;}

/* From HsColour */
.hs-keyglyph, .hs-layout {color: red;}
.hs-keyword {color: blue;}
.hs-comment, .hs-comment a {color: green;}
.hs-str, .hs-chr {color: teal;}
</style>
</head>
<body>

<script type='text/javascript'>
document.body.className = "script";
</script>

<div id="leftbar" valign="top" style="min-width:200px">

<p><a class="all" href="javascript:show('')">All hints</a></p>
<ul>
$HINTS
</ul>

<p><a class="all" href="javascript:show('')">All files</a></p>
<ul>
$FILES
</ul>

</div>
<div id="content" valign="top" width="100%">
<p>
    Report generated by <a href="http://community.haskell.org/~ndm/hlint/">HLint</a>
$VERSION
    - a tool to suggest improvements to your Haskell code.
</p>

$CONTENT
</div>
<script type='text/javascript'>
show(window.location.hash.slice(1), true);
</script>
</body>
</html>
